package com.ruoyi.system.mapper;

import java.util.List;
import com.ruoyi.system.domain.SysCodingSerialRecord;

/**
 * 编码流水号记录Mapper接口
 * 
 * @author ruoyi
 * @date 2025-08-08
 */
public interface SysCodingSerialRecordMapper 
{
    /**
     * 查询编码流水号记录
     * 
     * @param recordId 编码流水号记录主键
     * @return 编码流水号记录
     */
    public SysCodingSerialRecord selectSysCodingSerialRecordByRecordId(Long recordId);

    /**
     * 查询编码流水号记录列表
     * 
     * @param sysCodingSerialRecord 编码流水号记录
     * @return 编码流水号记录集合
     */
    public List<SysCodingSerialRecord> selectSysCodingSerialRecordList(SysCodingSerialRecord sysCodingSerialRecord);

    /**
     * 新增编码流水号记录
     * 
     * @param sysCodingSerialRecord 编码流水号记录
     * @return 结果
     */
    public int insertSysCodingSerialRecord(SysCodingSerialRecord sysCodingSerialRecord);

    /**
     * 修改编码流水号记录
     * 
     * @param sysCodingSerialRecord 编码流水号记录
     * @return 结果
     */
    public int updateSysCodingSerialRecord(SysCodingSerialRecord sysCodingSerialRecord);

    /**
     * 删除编码流水号记录
     * 
     * @param recordId 编码流水号记录主键
     * @return 结果
     */
    public int deleteSysCodingSerialRecordByRecordId(Long recordId);

    /**
     * 批量删除编码流水号记录
     * 
     * @param recordIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteSysCodingSerialRecordByRecordIds(Long[] recordIds);
    
    /**
     * 原子更新流水号（并发安全）
     * 
     * @param ruleId 规则ID
     * @param segmentId 段ID
     * @param resetKey 重置键
     * @return 影响行数
     */
    public int incrementSerialNumber(Long ruleId, Long segmentId, String resetKey);
    
    /**
     * 查询当前流水号值
     * 
     * @param ruleId 规则ID
     * @param segmentId 段ID
     * @param resetKey 重置键
     * @return 当前值
     */
    public Long selectCurrentValue(Long ruleId, Long segmentId, String resetKey);
}
